package com.hzncc.flowable_diboot.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.diboot.core.binding.query.BindQuery;
import com.diboot.core.binding.query.Comparison;
import com.diboot.core.entity.BaseModel;
import com.fasterxml.jackson.annotation.JsonAlias;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import jakarta.validation.constraints.NotNull;

/**
* SAP客户 Entity 定义
* @author MyName
* @version 1.0
* @date 2024-06-05
* Copyright © MyCorp
*/

@TableName("mdl_sap_customer")
@Getter @Setter @Accessors(chain = true)
public class SapCustomer extends BaseModel {
    private static final long serialVersionUID = 1253436304237357599L;

    /**
     * 租户
     */
    @NotNull(message = "租户不能为空")
    @TableField()
    private String tenantId;

    /**
     * SAP客户编号
     */
    @Length(max=100, message="SAP客户编号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("kunnr")
    private String sapNo;

    /**
     * 客户名称
     */
    @Length(max=100, message="客户名称长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("name1")
    private String name;

    /**
     * 客户简称
     */
    @Length(max=100, message="客户简称长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("sort1")
    private String shortName;

    /**
     * 客户分类
     */
    @TableField()
    @JsonAlias("kukla")
    private String cate;

    /**
     * 客户性质
     */
    @TableField()
    @JsonAlias("brsch")
    private String nature;

    /**
     * 客户行业
     */
    @TableField()
    @JsonAlias("bran1")
    private String business;

    /**
     * 公司代码
     */
    @Length(max=100, message="公司代码长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("bukrs")
    private String companyCode;

    /**
     * 法定代表人
     */
    @Length(max=100, message="法定代表人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String legalRepresentative;

    /**
     * 委托代理人
     */
    @Length(max=100, message="委托代理人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String entrustedAgent;

    /**
     * 通讯地址
     */
    @Length(max=100, message="通讯地址长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("street")
    private String contactAddress;

    /**
     * 电话
     */
    @Length(max=100, message="电话长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String phone;

    /**
     * 传真
     */
    @Length(max=100, message="传真长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String fax;

    /**
     * 开户行
     */
    @Length(max=100, message="开户行长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String openingBank;

    /**
     * 账户名称
     */
    @Length(max=100, message="账户名称长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String accountName;

    /**
     * 账号
     */
    @Length(max=100, message="账号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String account;

    /**
     * 税号
     */
    @Length(max=100, message="税号长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("stcd1")
    private String tax;

    /**
     * 收货地址
     */
    @Length(max=200, message="收货地址长度应小于200")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("street")
    private String address;

    /**
     * 定价过程
     */
    @Length(max=100, message="定价过程长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String priceProcess;

    /**
     * 收货人
     */
    @Length(max=100, message="收货人长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String consignee;

    /**
     * 收货人电话
     */
    @Length(max=100, message="收货人电话长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String consigneePhone;

    /**
     * 国家
     */
    @Length(max=100, message="国家长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String country;

    /**
     * 省份
     */
    @Length(max=100, message="省份长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String province;

    /**
     * 客户账户组
     */
    @Length(max=100, message="客户账户组长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("ktokd")
    private String accountGroup;

    /**
     * 销售组织
     */
    @Length(max=100, message="销售组织长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("vkorg")
    private String salesOrg;

    /**
     * 销售部门
     */
    @Length(max=100, message="销售部门长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String salesDept;

    /**
     * 分销渠道
     */
    @Length(max=100, message="分销渠道长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String channel;

    /**
     * 产品组
     */
    @Length(max=100, message="产品组长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    private String produGroup;

    /**
     * 账户分配
     */
    @Length(max=100, message="账户分配长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("ktgrd")
    private String dis;

    /**
     * crm客户id
     */
    @TableField()
    private String customerId;

    /**
     * 税分类
     */
    @Length(max=100, message="税分类长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("taxkd")
    private String taxCate;


    /**
     * 邮编
     */
    @Length(max=100, message="邮编长度应小于100")
    @BindQuery(comparison = Comparison.LIKE)
    @TableField()
    @JsonAlias("pstlz")
    private String postalCode;

}